﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Conexion;
using System.Data;
using System.Globalization;
using System.Xml;

namespace AccesoDatos
{
    public class Manejador_Mantenimiento
    {
        clsConexion conexion = new clsConexion();

        public clsMantenimiento Informacion_ticket(string Folid, string Entrada, string Salida, string Serie)
        {
            try
            {
                List<clsParametros> lista = new List<clsParametros>();
                lista.Add(new clsParametros("@folio", Folid));
                lista.Add(new clsParametros("@serie", Serie));
                lista.Add(new clsParametros("@salida", Salida));
                lista.Add(new clsParametros("@entrada", Entrada));
                DataTable Datos = conexion.Datatable_standart("sp_RMA_MantenimientoTicket", lista);
                DataRow[] dr = new DataRow[Datos.Rows.Count];
                Datos.Rows.CopyTo(dr, 0);
                object[] Info = Datos.Rows[0].ItemArray;

                clsMantenimiento objeto = new clsMantenimiento();

                if (Info[25].ToString().Length == 0)
                {
                    Info[25] = DateTime.Now.ToString("y/M/d");
                    objeto.Fecha_reposicion = DateTime.Parse(Info[25].ToString());
                }
                else 
                {
                    objeto.Fecha_reposicion = DateTime.Parse(Info[25].ToString(), CultureInfo.CreateSpecificCulture("en-US"));
                }

                if (Info[22].ToString().Length == 0)
                {
                    Info[22] = DateTime.Now.ToString("y/M/d");
                    objeto.Fecha_compra = DateTime.Parse(Info[22].ToString());
                }
                else 
                {
                    objeto.Fecha_compra = DateTime.Parse(Info[22].ToString(), CultureInfo.CreateSpecificCulture("en-US"));
                }

                objeto.Sucursal = Info[0].ToString();
                objeto.Orden_servicio = Info[1].ToString();
                //objeto.Orden_servicio = Folid;
                objeto.Fecha_registro = DateTime.Parse(Info[2].ToString(), CultureInfo.CreateSpecificCulture("en-US"));
                objeto.Status = Info[3].ToString();
                objeto.Entrada = Info[4].ToString();
                objeto.Producto = Info[5].ToString();
                objeto.Descripcion = Info[6].ToString();
                objeto.Serie = Info[7].ToString();
                objeto.Cliente = Info[8].ToString();
                objeto.Nombre_cliente = Info[9].ToString();
                objeto.Telefono = Info[10].ToString();
                objeto.Factura = Info[11].ToString();
                objeto.Fech_factura = Info[12].ToString();
                objeto.Costo_fac = Info[13].ToString();
                objeto.Traspaso = Info[14].ToString();
                objeto.Salida = Info[15].ToString();
                objeto.Falla = Info[16].ToString();
                objeto.Observacion = Info[17].ToString();
                objeto.Producto_reposision = Info[18].ToString();
                objeto.Descripcion_producto_reposicion = Info[19].ToString();
                objeto.Serie_reposicion = Info[20].ToString();
                objeto.Costo_reposicion = Info[21].ToString();
                objeto.Proveedor = Info[26].ToString();
                objeto.Rm_compra = Info[23].ToString();
                objeto.Referencia_compra = Info[24].ToString();
                objeto.Accesorios =Info[27].ToString();
                objeto.Costo_compra =Info[28].ToString();
                
                return objeto;
            }
            catch { return null; }
        }

        public DataTable Estatus()
        {
            DataTable X = conexion.Datatable_standart("sp_RMA_Estatus", null);
            return X;
        }

        public DataTable Proveedores()
        {
            DataTable X = conexion.Datatable_standart("sp_RMA_RegresaProveedores", null);
            return X;
        }

        public DataTable Movimientos_folio(string orden)
        {
            List<clsParametros> lista = new List<clsParametros>();
            lista.Add(new clsParametros("@orden", orden));
            DataTable X = conexion.Datatable_standart("sp_RMA_movimientos_tickets", lista);
            return X;
        }

        public DataTable Seguimientos_folio(string folio)
        {
            List<clsParametros> lista = new List<clsParametros>();
            lista.Add(new clsParametros("@Folio", folio));
            DataTable X = conexion.Datatable_standart("sp_RMA_ObtenerSegObservacion", lista);
            return X;
        }

        public bool guardar(clsMantenimiento objeto, string usuario, XmlDocument xml)
        {
            bool respuesta = false;
            try
            {
                List<clsParametros> lista = new List<clsParametros>();
                lista.Add(new clsParametros("@folio", objeto.Orden_servicio));
                lista.Add(new clsParametros("@entrada", objeto.Entrada));
                lista.Add(new clsParametros("@producto", objeto.Producto));
                lista.Add(new clsParametros("@serie", objeto.Serie));
                lista.Add(new clsParametros("@traspaso", objeto.Traspaso));
                lista.Add(new clsParametros("@salida", objeto.Salida));
                lista.Add(new clsParametros("@falla", objeto.Falla));
                lista.Add(new clsParametros("@productorep", objeto.Producto_reposision));
                lista.Add(new clsParametros("@serierep", objeto.Serie_reposicion));
                lista.Add(new clsParametros("@costorep", objeto.Costo_reposicion));
                lista.Add(new clsParametros("@rm", objeto.Rm_compra));
                lista.Add(new clsParametros("@ref_rm", objeto.Referencia_compra));
                lista.Add(new clsParametros("@proveedor", objeto.Proveedor));
                lista.Add(new clsParametros("@usuario", usuario));
                lista.Add(new clsParametros("@xml", xml.InnerXml));
                lista.Add(new clsParametros("@Estatus", objeto.Estatus));

                respuesta = conexion.Procedure_standart("sp_RMA_ModificaTicket", lista);
                return respuesta;
            }
            catch { return false; }

        }
        public bool guardar_seg_observacion(string folio, int usuario, string obs)
        {
            bool respuesta = false;
            try
            {
                List<clsParametros> lista = new List<clsParametros>();
                lista.Add(new clsParametros("@folio", folio));
                lista.Add(new clsParametros("@observacion",obs ));
                lista.Add(new clsParametros("@usuario", usuario.ToString()));
                
                respuesta = conexion.Procedure_standart("sp_RMA_GuardarSegObservacion", lista);
                return respuesta;
            }
            catch { return false; }

        }
        public bool Cancela_ticket(int usuario, string tipo, string motivo, string folio, string referencia, string detalles)
        {
            bool respuesta = false;
            try
            {
                List<clsParametros> lista = new List<clsParametros>();
                lista.Add(new clsParametros("@folio", folio));
                lista.Add(new clsParametros("@tipo", tipo));
                lista.Add(new clsParametros("@motivo", motivo));
                lista.Add(new clsParametros("@ref", referencia));
                lista.Add(new clsParametros("@detalles", detalles));
                lista.Add(new clsParametros("@usuario", usuario.ToString()));
                respuesta = conexion.Procedure_standart("sp_RMA_CancelaTicket", lista);
                return respuesta;
            }
            catch { return false; }

        }

        public DataTable Observacion_recepcion(string Folid)
        {
            try
            {
                List<clsParametros> lista = new List<clsParametros>();
                lista.Add(new clsParametros("@folio", Folid));
                DataTable Datos = conexion.Datatable_standart("sp_RMA_ObservacionesRecepcion", lista);
                return Datos;
            }
            catch { return null; }
        }

        public object[] Informacion_Seguimiento(string Folid)
        {
            try
            {
                List<clsParametros> lista = new List<clsParametros>();
                lista.Add(new clsParametros("@folid", Folid));
                DataTable Datos = conexion.Datatable_standart("sp_RMA_MantenimientoTicket_SegProv", lista);
                DataRow[] dr = new DataRow[Datos.Rows.Count];
                Datos.Rows.CopyTo(dr, 0);
                object[] objeto = Datos.Rows[0].ItemArray;
                return objeto;
            }
            catch { return null; }
        }
        public bool Agrega_Mod(string Folio, string RMApro, string Guia, string Rastreo, string Paqueteria, string Query)
        {
            bool respuesta = false;
            try
            {
                List<clsParametros> lista = new List<clsParametros>();
                lista.Add(new clsParametros("@folid", Folio));
                lista.Add(new clsParametros("@RMApro", RMApro));
                lista.Add(new clsParametros("@Guia", Guia));
                lista.Add(new clsParametros("@rastreo", Rastreo));
                lista.Add(new clsParametros("@paqueteria", Paqueteria));
                lista.Add(new clsParametros("@Query", Query));
                respuesta = conexion.Procedure_standart("sp_RMA_MantenimientoTicket_addSegProv", lista);
                return respuesta;
            }
            catch { return false; }

        }
    }
}
